package me.firstapp.repository.bbs;

import java.util.Date;
import java.util.List;
import java.util.Map;

import me.firstapp.common.utils.Page;
import me.firstapp.module.bbs.Topic;
import me.firstapp.repository.base.EntityRepository;

public interface TopicRepository extends EntityRepository<Topic> {
	/**
	 * 分页查询话题
	 * 
	 * @param pageIndex
	 *            页码(必传)
	 * @param pageSize
	 *            页容量(必传)
	 * @param sectionId
	 *            板块id(非必传)
	 */
	Page<Topic> findTopicsPage(Integer pageNo, Integer pageSize, Long sectionId, Long memberId, Integer recommend,
			String sortParam, String sortType, Long apiClientId);

	/**
	 * 根据话题标题查询话题
	 * 
	 * @param title
	 *            话题标题 (必传)
	 */
	Topic findTopicByTitle(String title, Long apiClientId);

	Topic findTopicById(Long id, Long apiClientId);

	/**
	 * 查询板块话题量
	 * 
	 * @param memberId
	 */
	Long findTopicsCountsByMemberId(Long memberId, Long apiClientId);

	/**
	 * 查询板块话题量
	 * 
	 * @param sectionId
	 */
	Long findTopicsCountsBySectionId(Long sectionId, Long apiClientId);

	/**
	 * 获取一定数量的帖子
	 * 
	 * @param memberId
	 *            用户id
	 * @param sectionId
	 *            板块id
	 * @param counts
	 *            数量(必传)
	 */
	List<Topic> findSomeTopics(Long memberId, Long sectionId, Integer counts, Long apiClientId);

	/**
	 * 分页查询话题
	 * 
	 * @param pageNo
	 *            页码
	 * @param pageSize
	 *            页容
	 * @param searchParams
	 *            搜索参数
	 * @param sortParam
	 *            排序字段
	 * @param sortType
	 *            排序类型 ASC,DESC
	 * @param startTime
	 *            创建时间 起始
	 * @param startTime
	 *            创建时间 结束
	 */
	Page<Topic> findTopicsPageByParams(Integer pageNo, Integer pageSize, Map<String, Object> searchParams,
			String sortParam, String sortType, Date startTime, Date endTime, Long apiClientId);

	Long findTopicsCountsByCreateTime(Date startTime, Date endTime, Long apiClientId);
}
